#ifndef REPORT_H
#define REPORT_H

#include <Date.h>
#include <DocumentDetails.h>

class Report
{
    protected:
        std::string author;
        //std::string taxPayerId;
        unsigned long taxPayerId;

        DocumentDetails documentDetails;

        short int reportPeriod;
        short int reportMonth;
        short int reportYear;

        short int adminRegion;
        short int adminDistrict;

        Date creationDate;
        //std::string softwareName;

    public:

        //virtual std::string ToString() = 0;
        std::string GenerateFileName();
        virtual bool WriteToFile(const std::string& fileName) = 0;

        void SetAuthor(const std::string& author);
        void SetTaxPayerId(unsigned long taxPayerId);
        void SetDocumentDetails(const DocumentDetails& documentDetails);
        void SetReportPeriod(short int reportPeriod);
        void SetReportMonth(short int reportMonth);
        void SetReportYear(short int reportYear);
        void SetAdminRegion(short int adminRegion);
        void SetAdminDistrict(short int adminDistrict);
        void SetCreationDate(const Date& creationDate);

};

#endif // REPORT_H
